﻿using System;
using smp.ButterflyCakes.Models;
using smp.ButterflyCakes.Models.Data;
using smp.ButterflyCakes.Models.FormModels.Order;
using smp.ButterflyCakes.Models.InputModels.Order;


namespace smp.ButterflyCakes.Repository.Interfaces
{
    public interface IDomainCakeRepository
    {
        CakeDataItem GetCakeData(Guid id);

        bool SaveCakeTitle(CakeTitleModel model, StageDataItem nextStage);

        bool AddCakeFlavour(AddFlavourInput model);

        bool RemoveCakeFlavour(RemoveFlavourInput model);

        bool SaveCakeFlavour(ComponentFlavourModel model, StageDataItem nextStage);

        bool SaveCakeQuantity(ComponentQuantityModel model, StageDataItem nextStage);

        bool SaveCakeHeight(ComponentHeightModel model, StageDataItem nextStage);

        bool SaveCakeSize(SaveSizeInput model);

        bool RemoveCakeSize(RemoveSizeInput model);

        bool SetCakeSize(ComponentSizeModel model, StageDataItem nextStage);

        bool SaveCakeButtercream(ComponentButterCreamModel model, StageDataItem nextStage);

        bool SaveCakePreserve(ComponentPreserveModel model, StageDataItem nextStage);

        bool SaveShapeBuilderToCake(ShapeBuilderInput model, DiagramItem diagram);

        bool SaveFinish(ComponentFinishingModel model, StageDataItem nextStage);
    }
}
